Nützliche SQL Skripte für die Analyse der aufgezeichneten Pakete

TrafMeter enthält kein Tool für die Erstellung von SQL Analysen aus einer Paket Logging Datenbank. Für die beigefügten Beispiele haben wie die im Lieferumfang des Microsoft SQL Servers enthaltenen Tools benutzt.

1. Den gesamten verursachten Traffic pro Filter ermitteln

select filterid, sum(sent),sum(recv) from packets group by filterid

2. Den gesamten verursachten Traffic pro Filter pro Tag ermitteln

select filterid as filterid, sum(sent) as sent, sum(recv) as recv from packets
   where datediff(day,'2002-11-24',ts)=0
   group by filterid
   order by filterid

3. Den gesamten verursachten Traffic pro Filter für einen bestimmten Monat ermitteln

select filterid as filterid, sum(sent) as sent, sum(recv) as recv from packets
   where datediff(month,'2002-11-01',ts)=0
   group by filterid
   order by filterid

4. Den gesamten verursachten Traffic eines Filters für einen bestimmten Tag in einem bestimmten Monat ermitteln

Setzen Sie die Variable @dd auf den ersten Tag des entsprechenden Monats.

declare @dd datetime
set @dd='2002-11-01'
select datediff(day,@dd,ts) as mday, sum(sent) as sent, sum(recv) as recv
   from packets
   where (filterid=1 AND (datediff(month,@dd,ts)=0))
   group by datediff(day,@dd,ts)
   order by datediff(day,@dd,ts)

Das obige Beispiel zeigt die Datum anhand einer auf 0 basierenden Indexes. D.h. der erste Tag im Monat ist 0, der zweite Tag ist 1, etc. Um dies zu vermeiden, kann folgendes Skript mit einer temporären Tabelle verwendet werden:

drop table #p1
go
declare @dd datetime
set @dd='2002-11-01'
select datediff(day,@dd,ts) as mday, sum(sent) as sent, sum(recv) as recv
   into #p1
   from packets 
   where (filterid=1 AND (datediff(month,@dd,ts)=0))
   group by datediff(day,@dd,ts)
go
update #p1 set mday=mday+1
go
select * from #p1 order by mday

5. Den gesamten verursachten Traffic eines bestimmten Hosts eines bestimmten Filter in einem bestimmten Monat ermitteln

select dst_ip, sum(sent) as sent, sum(recv) as recv 
   from packets
   where (filterid=1 AND (datediff(month,'2002-11-01',ts)=0))
   group by dst_ip